/**
    ATClab - scriptable Air Traffic Control simulations.
    Copyright (C) 2010 openatclab@gmail.com

    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.
**/

#ifndef __ATC_LAB_ENGINE_HDR__
#define __ATC_LAB_ENGINE_HDR__


#include <qobject.h>
#include "atc_types.h"
#include <memory>


namespace atc {

	//
	// atc classes
	//
	
	class Airspace;
	class Canvas;
	class Clock;


    //
    // atc::LabEngine
    //

    class LabEngine : public QObject {
		Q_OBJECT

    public:
        LabEngine();
        ~LabEngine();

    public: // builder interface
		void set_airspace( Airspace* );
		void set_clock( Clock* );
		void set_canvas( Canvas* );

	public:
		void start();
		void stop();

	public slots:
		void handle_information( KeyValues & ); 

	private:
		void initalize_visualizer();

	signals:
		void state_data( KeyValues & ); 

	private:
		Airspace*       _airspace;
		Canvas*         _canvas;
		Clock*          _clock;


	};




};


#endif
